#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

CFLAGS = -Wall
CPPFLAGS = -D__STDC_CONSTANT_MACROS
CXXFLAGS = -DHAVE_LIBCRYPTO

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
DEBOPT = --enable-debug
CFLAGS += -g
CXXFLAGS += -g
else
DEBOPT =
endif

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif

# These are used to get the most recent version of the original sources from github
UURL = $(shell git config --get remote.origin.url)
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
HEAD = $(shell git rev-parse HEAD)
PKD  = $(abspath $(dir $(MAKEFILE_LIST)))
PKG  = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\-|\+nmu\d+.*)};')
DTYPE =
TARBALL = ../$(PKG)_$(VER)$(DTYPE).orig.tar.xz

%:
	dh $@ --with autoreconf

override_dh_auto_configure:
	CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" dh_auto_configure -- \
	  --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
	  --sysconfdir=/etc/zm --prefix=/usr --mandir=\$${prefix}/share/man \
	  --infodir=\$${prefix}/share/info --with-mysql=/usr \
	  --with-mariadb=/usr --with-webdir=/usr/share/zoneminder \
	  --with-ffmpeg=/usr --with-cgidir=/usr/lib/cgi-bin \
	  --with-webuser=www-data --with-webgroup=www-data \
	  --enable-mmap=yes $(DEBOPT)

override_dh_clean:
	# Add here commands to clean up after the build process.
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_clean src/zm_config_defines.h
	#
	# Delete remaining auto-generated Makefile if Makefile.in exists
	find $(CURDIR)/ -type f -name "Makefile" | while read file; do \
	  [ -f $$file.in ] && rm -f $$file; \
	done || true
	#
	# Delete remaining auto-generated Makefile.in if Makefile.am exists
	find $(CURDIR)/ -type f -name "Makefile.in" | while read filein; do \
	  fileam=`echo $$filein | sed 's/\(.*\)\.in/\1\.am/'`; \
	  [ -f $$fileam ] && rm -f $$filein; \
	done || true

override_dh_install:
	dh_install --fail-missing
	#
	# NOTE: This is a short-term kludge; hopefully changes in the next
	# upstream version will render this unnecessary.
	rm -rf debian/zoneminder/usr/share/zoneminder/events
	rm -rf debian/zoneminder/usr/share/zoneminder/images
	rm -rf debian/zoneminder/usr/share/zoneminder/temp
	# The link stuff for these folders has been moved to
	# zoneminder-core.links file
	#
	# This is a slightly lesser kludge; moving the cgi stuff to
	# /usr/share/zoneminder/cgi-bin breaks one set of behavior,
	# having it just in /usr/lib/cgi-bin breaks another bit of
	# behavior.
	# The link stuff for /usr/share/zoneminder/cgi-bin has been moved to
	# zoneminder-ui-base.links file

override_dh_installinit:
	dh_installinit --package=zoneminder-core --name=zoneminder

override_dh_systemd_start:
	dh_systemd_start --package=zoneminder-core --name=zoneminder \
	  --restart-after-upgrade

override_dh_systemd_enable:
	dh_systemd_enable --package=zoneminder-core --name=zoneminder

override_dh_fixperms:
	dh_fixperms
	#
	# As requested by the Debian Webapps Policy Manual §3.2.1
	chown root:www-data debian/zoneminder-core/etc/zm/zm.conf
	chmod 640 debian/zoneminder-core/etc/zm/zm.conf

override_dh_auto_test:
	# do not run tests...

.PHONY: override_dh_strip
override_dh_strip:
	dh_strip --dbg-package=zoneminder-core-dbg

# Inspired by https://wiki.debian.org/onlyjob/get-orig-source
.PHONY: get-orig-source
get-orig-source: $(TARBALL) $(info I: $(PKG)_$(VER)$(DTYPE))
	@

$(TARBALL):
	$(if $(wildcard $(PKG)-$(VER)),$(error folder '$(PKG)-$(VER)' exists, aborting...))
	@echo "# Cloning origin repository..."; \
	if ! git clone $(UURL) $(PKG)-$(VER); then \
	  $(RM) -r $(PKG)-$(VER); \
	  echo "failed to clone repository, aborting..."; \
	  false; \
	fi
	@if [ $(BRANCH) != "master" ]; then \
	  cd $(PKG)-$(VER); \
	  echo "# Not on master branch, fetching origin branch '$(BRANCH)'..."; \
	  git fetch origin $(BRANCH):$(BRANCH) || false; \
	  echo "# Switching to branch '$(BRANCH)'..."; \
	  git checkout $(BRANCH) || false; \
	fi
	@echo "# Checking local source..."
	@if [ $$(cd $(PKG)-$(VER) && git rev-parse HEAD) = $(HEAD) ]; then \
	  echo "even with origin, ok"; \
	  true; \
	else \
	  echo "not even with origin, aborting..."; \
	  false; \
	fi
	@echo "# Setting times..."
	@cd $(PKG)-$(VER) \
	&& for F in $$(git ls-tree -r --name-only HEAD | sed -e "s/\s/\*/g"); do \
	  touch --no-dereference -d "$$(git log -1 --format="%ai" -- $$F)" "$$F"; \
	done
	@echo "# Cleaning-up..."
	cd $(PKG)-$(VER) && $(RM) -r .git
	@echo "# Packing file '$(TARBALL)'..."
	@find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
	| XZ_OPT="-6v" tar -caf "$(TARBALL)" -T- --owner=root --group=root --mode=a+rX \
	&& $(RM) -r "$(PKG)-$(VER)"
